home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 140 / Gekkan Dennou Club - 2000.1 Vol. 140 (Japan).7z / Gekkan Dennou Club - 2000.1 Vol. 140 (Japan) (Track 1).bin / tools / xpicw / xpicw110.lzh / WLSource / iti16.s < prev    next >
Text File  |  1997-04-10  |  4KB  |  213 lines

  1. *    iti16.s    16ドット市松模様ワイプ
  2. *        市松模様が上から下、次にもう一度上から下のワイプ / 最高速 = 2
  3. *            by Mitsuky
  4.  
  5.  
  6. SPEED_MAX    equ    2
  7.  
  8.     .offset    8        * 引き数
  9. _source_ptr:    .ds.l    1
  10. _dest_ptr:    .ds.l    1
  11. _speed:        .ds.l    1
  12. _vdisp:        .ds.l    1
  13.  
  14.  
  15.  
  16. GPIP_DATA    equ    $e8_8001
  17.  
  18.  
  19. TR32A    .macro    num        * 16ドット転送マクロ
  20.     movem.l    num(a2),d0-d4/a0-a1/a6
  21.     movem.l    d0-d4/a0-a1/a6,num(a3)
  22.     .endm
  23. TR32B    .macro    num        * 16ドット転送マクロ
  24.     movem.l    num(a4),d0-d4/a0-a1/a6
  25.     movem.l    d0-d4/a0-a1/a6,num(a5)
  26.     .endm
  27.  
  28.  
  29.  
  30.     .text
  31.     .even
  32.  
  33.     .dc.b    'WL10',$0d,$0a
  34.     .dc.b    '16ドット市松模様ワイプ / 最高速 = 2',$0d,$0a
  35.     .dc.b    '    by Mitsuky',$0d,$0a
  36.     .dc.b    $1a
  37.     .even
  38.  
  39. iti16:
  40.     link    a6,#0
  41.     movem.l    d1-d7/a0-a5,-(sp)
  42.  
  43.     move.l    _speed(a6),d0
  44.     bmi    iti16_ask_speed
  45.     cmpi.l    #SPEED_MAX,d0
  46.     bhi    iti16_err
  47.  
  48.     tst.l    _vdisp(a6)
  49.     bmi    main_ask_vdisp
  50.  
  51.  
  52.     movea.l    _source_ptr(a6),a2    * a2.l = 転送元アドレス・その1
  53.     movea.l    _dest_ptr(a6),a3    * a3.l = 転送先アドレス・その1
  54.     lea.l    32(a2),a4    * a4.l = 転送元アドレス・その2
  55.     lea.l    32(a3),a5    * a5.l = 転送先アドレス・その2
  56.  
  57.  
  58.                 * 速度 = 0...SPEED_MAX
  59.     moveq.l    #16-1,d7    * d7.w = ループ回数-1
  60.     moveq.l    #SPEED_MAX,d6
  61.     sub.w    d0,d6        * d6.w = V-SYNC 待ち回数-1
  62. iti16_loop_a:    * 上から下へ(1回目)
  63.     move.w    d6,d0        * d0.w =
  64. @@:    bsr    vdisp
  65.     dbra    d0,@b
  66.  
  67.     movem.l    a6,-(sp)    *
  68.  
  69.     moveq.l    #16-1,d5
  70. @@:    TR32A    0
  71.     TR32A    64*1
  72.     TR32A    64*2
  73.     TR32A    64*3
  74.     TR32A    64*4
  75.     TR32A    64*5
  76.     TR32A    64*6
  77.     TR32A    64*7
  78.     TR32A    64*8
  79.     TR32A    64*9
  80.     TR32A    64*10
  81.     TR32A    64*11
  82.     TR32A    64*12
  83.     TR32A    64*13
  84.     TR32A    64*14
  85.     TR32A    64*15
  86.  
  87.     TR32A    1024*16+32
  88.     TR32A    1024*16+64*1+32
  89.     TR32A    1024*16+64*2+32
  90.     TR32A    1024*16+64*3+32
  91.     TR32A    1024*16+64*4+32
  92.     TR32A    1024*16+64*5+32
  93.     TR32A    1024*16+64*6+32
  94.     TR32A    1024*16+64*7+32
  95.     TR32A    1024*16+64*8+32
  96.     TR32A    1024*16+64*9+32
  97.     TR32A    1024*16+64*10+32
  98.     TR32A    1024*16+64*11+32
  99.     TR32A    1024*16+64*12+32
  100.     TR32A    1024*16+64*13+32
  101.     TR32A    1024*16+64*14+32
  102.     TR32A    1024*16+64*15+32
  103.  
  104.     adda.l    #1024*32,a2
  105.     adda.l    #1024*32,a3
  106.     dbra    d5,@b
  107.  
  108.     movem.l    (sp)+,a6    *
  109.  
  110.     suba.l    #1024*32*16-1024,a2
  111.     suba.l    #1024*32*16-1024,a3
  112.     dbra    d7,iti16_loop_a
  113.  
  114.     movea.l    a4,a2
  115.     movea.l    a5,a3
  116.  
  117.  
  118.             * 上から下へ(2回目)
  119.     moveq.l    #16-1,d7    * d7.w = ループ回数-1
  120. iti16_loop_b:
  121.     move.w    d6,d0        * d0.w =
  122. @@:    bsr    vdisp
  123.     dbra    d0,@b
  124.  
  125.     movem.l    a6,-(sp)    *
  126.  
  127.     moveq.l    #16-1,d5
  128. @@:    TR32A    0
  129.     TR32A    64*1
  130.     TR32A    64*2
  131.     TR32A    64*3
  132.     TR32A    64*4
  133.     TR32A    64*5
  134.     TR32A    64*6
  135.     TR32A    64*7
  136.     TR32A    64*8
  137.     TR32A    64*9
  138.     TR32A    64*10
  139.     TR32A    64*11
  140.     TR32A    64*12
  141.     TR32A    64*13
  142.     TR32A    64*14
  143.     TR32A    64*15
  144.  
  145.     TR32A    1024*16-32
  146.     TR32A    1024*16+64*1-32
  147.     TR32A    1024*16+64*2-32
  148.     TR32A    1024*16+64*3-32
  149.     TR32A    1024*16+64*4-32
  150.     TR32A    1024*16+64*5-32
  151.     TR32A    1024*16+64*6-32
  152.     TR32A    1024*16+64*7-32
  153.     TR32A    1024*16+64*8-32
  154.     TR32A    1024*16+64*9-32
  155.     TR32A    1024*16+64*10-32
  156.     TR32A    1024*16+64*11-32
  157.     TR32A    1024*16+64*12-32
  158.     TR32A    1024*16+64*13-32
  159.     TR32A    1024*16+64*14-32
  160.     TR32A    1024*16+64*15-32
  161.  
  162.     adda.l    #1024*32,a2
  163.     adda.l    #1024*32,a3
  164.     dbra    d5,@b
  165.  
  166.     movem.l    (sp)+,a6    *
  167.  
  168.     suba.l    #1024*32*16-1024,a2
  169.     suba.l    #1024*32*16-1024,a3
  170.     dbra    d7,iti16_loop_b
  171.  
  172.  
  173.     moveq.l    #0,d0
  174. iti16_rts:
  175.     movem.l    (sp)+,d1-d7/a0-a5
  176.     unlk    a6
  177.     rts
  178.  
  179.  
  180. ****    ****
  181. iti16_err:
  182.     moveq.l    #-1,d0
  183.     bra    iti16_rts
  184.  
  185.  
  186. ****    ****
  187. iti16_ask_speed:
  188.     moveq.l    #SPEED_MAX,d0
  189.     bra    iti16_rts
  190.  
  191.  
  192. ****    ****
  193. main_ask_vdisp:
  194.     move.l    _speed(a6),d0
  195.     lea.l    ask_vdisp_table(pc),a0
  196.     add.w    d0,d0
  197.     move.w    (a0,d0.w),d0
  198.     bra    iti16_rts
  199.  
  200. ask_vdisp_table:
  201.     .dc.w    32*3,32*2,32*1
  202.  
  203.  
  204. *********************************************************
  205. vdisp:
  206.     movem.l    a0,-(sp)
  207.     move.l    _vdisp(a6),a0
  208.     jsr    (a0)
  209.     movem.l    (sp)+,a0
  210.     rts
  211.  
  212.  
  213.